﻿/* Copyright 2008 dnAnalytics Project.
 *
 * Contributors to this file:
 * Marcus Cuda
 *
 * This file is part of dnAnalytics.  dnAnalytics is licensed under the 
 * Microsoft Public License. See License.txt for a complete copy of the
 * license.
 */
namespace dnAnalytics.Statistics.Distributions
{
    /// <summary>
    /// A distribution that can be sampled.
    /// </summary>
    public interface IDistribution
    {
        /// <summary>
        /// Gets or sets the random number generator.
        /// </summary>
        /// <value>The random number generator used to generate a random sample.</value>
        System.Random RandomNumberGenerator { get; set; }

        /// <summary>
        /// The mean of the distribution.
        /// </summary>
        double Mean { get; }

        /// <summary>
        /// The variance of the distribution.
        /// </summary>
        double Variance { get; }

        /// <summary>
        /// The standard deviation of the distribution.
        /// </summary>
        double StdDev { get; }

        /// <summary>
        /// The entropy of the distribution.
        /// </summary>
        double Entropy { get; }
    }
}